This specification relates to cloud computing software platforms.
A cloud software platform is a platform-as-a-service (“PaaS”) cloud computing system that allows users to deploy and manage multiple instances of software workloads. In this specification, a workload refers generally to one or more software tasks to be executed by a software application platform. Each task can be implemented by a package, a utility, or an executable, to name just a few examples. The tasks of a workload commonly include both components that are in active development by the entity that deploys the workload as well as off-the-shelf software components. The platform then executes the software workloads using hardware of an underlying cloud computing infrastructure, which may or may not be maintained by a different entity, e.g., an entity providing an infrastructure-as-a-service (“IaaS”) platform. A cloud software platform thus functions as a software layer between the cloud computing infrastructure and the workloads executing on the infrastructure.
Some cloud software platforms provide integrated services. A service is a software subsystem that can provide one or more functionalities for use by platform workloads. An example of a service for use by a platform application is a database management system that maintains a database that can be accessed and modified by platform applications.
To provide a service, a cloud software platform can launch one or more service instances, which are software modules that implement the functionality of the service. A cloud software platform can automatically provision resources for executing service instances. This collection of resources may be referred to as a services back-end, which can either be pre-provisioned or provisioned on demand. Techniques for on-demand service provisioning are described in commonly-owned U.S. Patent Application Ser. No. 15/256,275, filed on Sep. 2, 2016, entitled, “On-Demand Resource Provisioning,” which is herein incorporated by reference.
A cloud software platform can bind a service instance to a workload by providing to the workload the information necessary for the workload to use a launched service instance. This information typically includes at least a location or identifier of a service or an executing service instance, e.g., a network address, and may also include credentials required to access and use the service or service instance.
A service can be integrated into a cloud software platform by implementing a service application programming interface (API). One example of a service API is the Open Service Broker API. A service API can be used by a controller of the cloud software platform to surface available services for selection by developers or platform administrators. For example, the cloud software platform can present to developers a collection of available integrated services that can be used with their workloads. Such a collection of available integrated services that can be used by workloads can be referred to as a services marketplace. A services marketplace is thus a mechanism, an interface, or a tool of the cloud software platform that allows developers or platform administrators to self-select services to be bound to their workloads. A services marketplace does not necessarily imply a financial exchange, although some services marketplaces can require payment in order for workloads to use certain services.
In order to expose available services to developers, some cloud software platforms use service brokers. A service broker is a component or a module of a service the implements the service API. Service brokers can thus receive and interpret calls to create, update, and delete service instances, and create and delete service bindings. A service broker can be a separate module or another workload running on the platform.
One simple example of a software platform workload that can make use of integrated services is an online movie database website. One software task of the workload can implement the front-end user interface of the website, and an integrated service can execute a database system that implements backend database functionality of the website.
There are several different roles involved in implementing integrated services on a cloud software platform. In this specification, a platform operator is an entity that deploys and maintains a cloud software platform. A workload developer is an entity that submits a workload to the cloud software platform to be executed in one or more instances of computing resources of the underlying computing infrastructure. And a service developer is an entity that submits a service to the cloud software platform to be used by workloads after being selected by developers. Lastly, an end user is an entity that accesses or uses a deployed workload that makes use of an integrated service. In this context, an entity serving in of these roles can be any appropriate person or organization as the context requires, e.g., a single developer, a team of developers, developers in an enterprise, or developers who contribute software to a code base. Thus, typically, the service developers are separate from both the platform operators and workload developers.
This separation of roles means that workload developers typically have to manually gauge the respective quality of services provided by a myriad of outside service developers. Some service marketplaces provide user ratings and reviews of available services. However, such reviews are subjective, prone to manipulation, and hard to use as a basis for informed decision-making.